home *** CD-ROM | disk | FTP | other *** search
- {
- From: FRED COHEN
- Time Slices...
-
- looking for routines for giving up time slices to
- various multi-taskers, mainly DV and OS/2. Please either
- post them if they are small enough, or tell me where I can
-
- You will need turbo pascal 6.0+ for this to compile. It is easy to
- convert over to regular pascal though.
- }
-
- Const
-
- MDOS = 0; { DOS }
- OS2 = 1; { OS/2 is installed }
- WIN = 2; { Windoze }
- DV = 3; { DesqView }
-
- Var
-
- Ops : Byte; { Operating System OS/2/DOS/WIN/DV}
-
-
- PROCEDURE giveslice; Assembler; {Gives up remainder of clock cycle
- under dos, windows, os/2 }
- asm
- CMP ops,MDos { Compare to DOS }
- JE @MSDOS { Jump if = }
- CMP ops,Dv { Compare to Desqview }
- JE @DESQVIEW { Jump if = }
- CMP ops, Win { Compare to Windows }
- JE @WINOS2 { Jump if = }
- CMP ops, OS2 { Compart OS/2 }
- JE @WINOS2 { Jump if = }
- JMP @NONE { None found, Jump to End }
-
-
- @MSDOS:
- INT 28h { Interupt 28h }
- JMP @NONE { Jump to the end }
-
- @DESQVIEW:
- MOV ax,1000h { AX = 1000h }
- INT 15h { Call Interupt 15h }
- JMP @NONE { Jump to the end }
-
- @WINOS2:
- MOV AX, 1680h { AX = 1680h }
- INT 2Fh { Call Interupt 2Fh for Win-OS/2 TimeSlice }
-
- @NONE:
-
- end; {GiveSlice}
-
- {***********}
-
- PROCEDURE checkos; Assembler;
- { Currently Supports DesqView, Microsoft Windows and IBM's OS/2 }
-
- asm
- mov ops, MDos { Default DOS }
- mov ah, 30h { AH = 30h }
- int 21h { dos version }
- cmp al, 14h
- jae @IBMOS2 { Jump if >= to 20 }
-
-
- mov ax,2B01h
- mov cx,4445h
- mov dx,5351h
- int 21h { Desqview Installed? }
- cmp al, 255
- jne @DesqView { Jump if AL <> 255 }
-
- mov ax,160Ah
- int 2Fh { Windows Install?}
- cmp ax, 0h
- je @Windows { If = Jump to Windows }
- jmp @Finish { Nothing found, go to the end }
-
- @IBMOS2:
- mov Ops, Os2 { Set OS Value }
- jmp @Finish
-
- @DesqView:
- mov ops, Dv { Set OS Value }
- jmp @Finish
-
- @Windows:
- mov ops, win { Set OS Value }
- jmp @Finish
-
- @FINISH:
- end; { checkos }
-
- {*********** MORE ********}
-
- procedure GiveTimeSlice; ASSEMBLER;
- asm { GiveTimeSlice }
- cmp MultiTasker, DesqView
- je @DVwait
- cmp MultiTasker, Windows
- je @WinOS2wait
- cmp MultiTasker, OS2
- je @WinOS2wait
- cmp MultiTasker, NetWare
- je @Netwarewait
- cmp MultiTasker, DoubleDOS
- je @DoubleDOSwait
-
- @Doswait:
- int $28
- jmp @WaitDone
-
- @DVwait:
- mov AX, $1000
- int $15
- jmp @WaitDone
-
- @DoubleDOSwait:
- mov AX, $EE01
- int $21
- jmp @WaitDone
-
- @WinOS2wait:
- mov AX, $1680
- int $2F
- jmp @WaitDone
-
- @Netwarewait:
- mov BX, $000A
- int $7A
-
- @WaitDone:
- end; { TimeSlice }
-